package com.usj.dcalvo.ecommerce.action;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import com.usj.dcalvo.ecommerce.bean.UsuarioBean;
import com.usj.dcalvo.ecommerce.manager.IUsuarioManager;

public class LoginAction extends ActionSupport implements Preparable {

	private static final long serialVersionUID = 1330094665595602076L;
	private UsuarioBean usuario;
	private IUsuarioManager usuarioManager;

	@Override
	public String execute() throws Exception {
		String result = ERROR;
		HttpServletRequest request = ServletActionContext.getRequest();
		Enumeration<String> attributeNames = request.getAttributeNames();

		if (usuario != null) {
			String email = usuario.getEmail();
			String contrasena = usuario.getContrasena();
			boolean comprobarLogin = usuarioManager.comprobarLogin(email,
					contrasena);
			if (comprobarLogin) {
				usuario = usuarioManager.getUsuarioPorEmail(email);
				request.getSession().setAttribute("usuario", usuario);
				result = SUCCESS;
			} else {
				result = INPUT;
				addActionError(getText("label.login.error"));
			}
		}
		return result;
	}

	@Override
	public void validate() {
		if (usuario == null || usuario.getEmail() == null
				|| "".equals(usuario.getEmail())
				|| usuario.getContrasena() == null
				|| "".equals(usuario.getContrasena())) {
			addActionError(getText("label.login.error"));
		}
		super.validate();
	}

	@Override
	public void prepare() throws Exception {
	}

	public UsuarioBean getUsuario() {
		return usuario;
	}

	public void setUsuario(UsuarioBean usuario) {
		this.usuario = usuario;
	}

	public IUsuarioManager getUsuarioManager() {
		return usuarioManager;
	}

	public void setUsuarioManager(IUsuarioManager usuarioManager) {
		this.usuarioManager = usuarioManager;
	}

}
